package com.dbms.parser.ast;

/**
 * ExpressionNode (表达式节点) 代表一个简单的二元表达式的抽象语法树 (AST) 结构。
 * 它通常用于表示 `WHERE` 子句或 `HAVING` 子句中的条件，
 * 例如 `id = 10` 或 `COUNT(*) > 5`。
 */
public class ExpressionNode extends AstNode {
    /**
     * 表达式的左操作数 (例如 "id" 或 "COUNT(*)")。
     */
    private final String leftOperand;
    /**
     * 表达式的操作符 (例如 "=", ">", "<")。
     */
    private final String operator;
    /**
     * 表达式的右操作数 (例如 10 或 5)。
     */
    private final Object rightOperand;

    public ExpressionNode(String leftOperand, String operator, Object rightOperand) {
        this.leftOperand = leftOperand;
        this.operator = operator;
        this.rightOperand = rightOperand;
    }

    /**
     * 获取左操作数。
     * @return 左操作数
     */
    public String getLeftOperand() {
        return leftOperand;
    }

    /**
     * 获取操作符。
     * @return 操作符
     */
    public String getOperator() {
        return operator;
    }

    /**
     * 获取右操作数。
     * @return 右操作数
     */
    public Object getRightOperand() {
        return rightOperand;
    }

    /**
     * 生成该表达式的字符串表示。
     * @return 例如 "id = 10"
     */
    @Override
    public String toString() {
        return leftOperand + " " + operator + " " + rightOperand;
    }
}